package com.integerdemo;

public class IntegerDemo1 {
    public static void main(String[] args) {
        /*
        Public Integer(int value)                            根据传递的整数创建一个Integer对象
        public Integer(String s)                             根据传递的字符串创建一个Integer对象
        public static Integer valueOf(int i)                 根据传递的整数创建一个Integer对象
        public static Integer valueOf(string s)              根据传递的字符串创建一个Integer对象
        public static Integer valueOf(String s,int radix)    根据传递的字符串和进制创建一个Integer对
         */
        //1.利用构造方法获取Integer的对象(jdk5以前)
        //Integer integer1 = new Integer(1);
        //Integer integer2 = new Integer("1");
        //System.out.println(integer1);
        //System.out.println(integer2);

        //2.利用静态方法获取Integer的对象(jdk5以前)
        Integer integer3 = Integer.valueOf(123);
        Integer integer4 = Integer.valueOf("123");
        Integer integer5 = Integer.valueOf("123",8);
        System.out.println(integer3);
        System.out.println(integer4);
        System.out.println(integer5);
        System.out.println("=========");

        //3.这两种方式获取对象的区别（掌握)
        //底层原理:
        //因为在实际开发中，-128~127之间的数据，用的比较多。
        //如果每次使用都是new对象，那么太浪费内存了
        //所以，提前把这个范围之内的每一个数据都创建好对象
        //如果要用到了不会创建新的，而是返回已经创建好的对象。
        Integer integer6 = Integer.valueOf(127);
        Integer integer7 = Integer.valueOf(127);
        System.out.println(integer6==integer7);//true

        Integer integer8 = Integer.valueOf(128);
        Integer integer9 = Integer.valueOf(128);
        System.out.println(integer8==integer9);//false

        //因为看到了new关键字，在Java中，每一次new都是创建了一个新的对象
        //所以下面的两个对象都是new出来，地址值不一样。
//        Integer integer10 = new Integer(127);
//        Integer integer11 = new Integer(127);
//        System.out.println(integer10==integer11);//false
//
//        Integer integer12 = new Integer(128);
//        Integer integer13 = new Integer(128);
//        System.out.println(integer12==integer13);//false
    }
}
